/**
 * 
 */
package com.ffcs.crmd.tsp.api.netty;

import java.util.List;

/**
 * 功能说明:netty客户端配置接口
 *
 * @author ZHONGFUHUA
 * 
 * @since 2.0.0-SNAPSHOT
 *
 */
public interface INettyConfigClient {
    
    /**
     * 功能说明: 获取发送缓冲器大小
     *
     * @return serverSocketSndBufSize 发送缓冲器大小
     */
    public int getSocketSndBufSize();
    
    /**
     * 功能说明: 设置发送缓冲器大小
     *
     * @param serverSocketSndBufSize 发送缓冲器大小
     */
    public void setSocketSndBufSize(int serverSocketSndBufSize);
    
    /**
     * 功能说明: 获取接收缓冲器大小
     *
     * @return serverSocketRcvBufSize 接收缓冲器大小
     */
    public int getSocketRcvBufSize();
    
    /**
     * 功能说明: 设置接收缓冲器大小
     *
     * @param serverSocketRcvBufSize 接收缓冲器大小
     */
    public void setSocketRcvBufSize(int serverSocketRcvBufSize);
    
    /**
     * 功能说明: 获取服务端处理请求线程池大小
     *
     * @return processorExecutorThreads 服务端处理请求线程池大小
     */
    public int getProcessorExecutorThreads();
    
    /**
     * 功能说明: 设置服务端处理请求线程池大小
     *
     * @param processorExecutorThreads 服务端处理请求线程池大小
     */
    public void setProcessorExecutorThreads(int processorExecutorThreads);
    
    /**
     * 功能说明: 获取服务端回调线程池大小
     *
     * @return callbackExecutorThreads 服务端回调线程池大小
     */
    public int getCallbackExecutorThreads();
    
    /**
     * 功能说明: 设置服务端回调线程池大小
     *
     * @param callbackExecutorThreads 服务端回调线程池大小
     */
    public void setCallbackExecutorThreads(int callbackExecutorThreads);
    
    /**
     * 功能说明: 获取信号量，异步调用情况会使用，防止本地Netty缓存请求过多
     *
     * @return permitsOneway 信号量，异步调用情况会使用，防止本地Netty缓存请求过多
     */
    public int getPermitsOneway();
    
    /**
     * 功能说明: 设置信号量，异步调用情况会使用，防止本地Netty缓存请求过多
     *
     * @param permitsOneway 信号量，异步调用情况会使用，防止本地Netty缓存请求过多
     */
    public void setPermitsOneway(int permitsOneway);
    
    /**
     * 功能说明: 获取信号量，Oneway情况会使用，防止本地Netty缓存请求过多
     *
     * @return permitsAsync 信号量，Oneway情况会使用，防止本地Netty缓存请求过多
     */
    public int getPermitsAsync();
    
    /**
     * 功能说明: 设置信号量，Oneway情况会使用，防止本地Netty缓存请求过多
     *
     * @param permitsAsync 信号量，Oneway情况会使用，防止本地Netty缓存请求过多
     */
    public void setPermitsAsync(int permitsAsync);
    
    /**
     * 功能说明: 获取boss循环器线程数
     *
     * @return workGroupThreads boss循环器线程数
     */
    public int getWorkGroupThreads();
    
    /**
     * 功能说明: 设置boss循环器线程数
     *
     * @param workGroupThreads boss循环器线程数
     */
    public void setWorkGroupThreads(int workGroupThreads);
    
    /**
     * 功能说明:
     * 
     * @return
     */
    public long getConnectTimeoutMillis();

    /**
     * 功能说明:创建clientId
     * 
     * @return clientId
     */
    public String buildClientId();

    /**
     * 功能说明:获取clientIP
     * 
     * @return
     */
    public String getClientIP();

    /**
     * 功能说明:获取服务端地址数组
     * 
     * @return
     */
    public List<String> getServerAddrList();

    /**
     * 功能说明:获取服务端地址字符串
     * 
     * @return
     */
    public String getServerAddr();

    /**
     * 功能说明:获取心跳间隔时间
     * 
     * @return
     */
    public long getHeartbeatBrokerInterval();

    /**
     * 功能说明:设置服务器地址
     * 
     * @param serverAddr
     */
    public void setServerAddr(String serverAddr);

    /**
     * 功能说明:
     * 
     * @return
     */
    int getListenPort();

    /**
     * 功能说明:
     * 
     * @param listenPort
     */
    void setListenPort(int listenPort);

    /**
     * 功能说明:
     * 
     * @param connectTimeoutMillis
     */
    void setConnectTimeoutMillis(long connectTimeoutMillis);

    /**
     * 功能说明:
     * 
     * @param heartbeatBrokerInterval
     */
    void setHeartbeatBrokerInterval(long heartbeatBrokerInterval);

    /**
     * 功能说明:
     * 
     * @return
     */
    int getClientChannelMaxIdleTimeSeconds();

    /**
     * 功能说明:
     * 
     * @param serverChannelMaxIdleTimeSeconds
     */
    void setClientChannelMaxIdleTimeSeconds(int clientChannelMaxIdleTimeSeconds);


}
